home *** CD-ROM | disk | FTP | other *** search
- #
- # model of a wave
- #
-
- # central curve of the central wave
-
- main_wave=cbspline ( 3 ,
- list ( ctlpt (E3, -1 , 0 , 0),
- ctlpt (E3, -0.8 , 1 , 0),
- ctlpt (E3, 0.4 , 2.5 , 0 ),
- ctlpt (E3, 1.6, 4 , 0),
- ctlpt (E3, 2.8 , 7 , 0),
- ctlpt (E3, 4.3 , 7.5 , 0),
- ctlpt (E3, 5.5, 7.7 , 0),
- ctlpt (E3, 7.0 , 6.5 , 0),
- ctlpt (E3, 7.0 , 4 ,0)),
- list (KV_OPEN));
-
-
- # central curve of one of the 2 side waves
-
- side_wave1 = cbspline ( 3 ,
- list ( ctlpt (E3, -1 , 0 , 0),
- ctlpt (E3, -0.8 , 1.2 ,0),
- ctlpt (E3, 0.4 , 1.4 ,0),
- ctlpt (E3, 1.2 , 1.5,0),
- ctlpt (E3, 2 , 1.8 ,0),
- ctlpt (E3, 4.2 , 2.5 , 0),
- ctlpt (E3, 6.4 , 2.3 , 0),
- ctlpt (E3, 7.6 , 1.52 , 0),
- ctlpt (E3, 9.8 , 1.2 , 0),
- ctlpt (E3, 10 , 0 , 0 ) ) ,
- list (KV_OPEN));
-
- # central curve of the second side wave
-
- side_wave = cbspline ( 3 ,
- list ( ctlpt (E3, -1 , 0 , 0),
- ctlpt (E3, -0.8 , 0.7 ,0),
- ctlpt (E3, 0.4 , 0.9, 0),
- ctlpt (E3, 1 , 1.1 , 0),
- ctlpt (E3, 1.6 , 1.3, 0),
- ctlpt (E3, 2.5 , 1.6 , 0),
- ctlpt (E3, 3.3 , 1.7 , 0),
- ctlpt (E3, 4.8 , 1.7 , 0)),
- list (KV_OPEN));
-
- # placement of the curves at the good place
-
- side_wave2 =side_wave1 * trans( vector (0 , 0 , 4));
- side_wave3=side_wave * trans( vector (0 , 0 , -3));
-
- # cross section of the waves
-
- wave_section=cbspline ( 3 ,
- list ( ctlpt (E3, 0, -3 , 0),
- ctlpt (E3, 1.7 , -2.5 , 0),
- ctlpt (E3, 2, -2 , 0),
- ctlpt (E3, 2 , 2 , 0),
- ctlpt (E3, 1.7 , 2.5 , 0),
- ctlpt (E3, 0 , 3, 0),
- ctlpt (E3, -1.7 , 2.5 , 0),
- ctlpt (E3, -2 , 2 , 0),
- ctlpt (E3, -2 ,-2 , 0),
- ctlpt (E3, -1.7 , -2.5 , 0),
- ctlpt (E3, 0 , -3 , 0) ) ,
- list (KV_OPEN));
-
- # coefficients of scaling for the waves
-
- scaleCrv = cbspline( 3,
- list( ctlpt( E2, 3, 2),
- ctlpt( E2, 2.6, 1.6),
- ctlpt( E2, 2.1, 1.3),
- ctlpt( E2, 1.8 , 0.9),
- ctlpt( E2, 1.5, 0.7),
- ctlpt( E2, 1.3 , 0.5),
- ctlpt( E2, 1.2 , 0.1) ) ,
- list (KV_OPEN));
-
- # construction of the waves
-
- wave = SWPSCLSRF (wave_section, main_wave ,scaleCrv,off, 0 );
- wave2=SWPSCLSRF (wave_section, side_wave2,scaleCrv,off, 0 );
- wave3=SWPSCLSRF (wave_section, side_wave3,scaleCrv,off, 0 );
-
- # colors and attributs of the waves
-
- color (wave, blue);
- attrib(wave,"reflect",0.6);
- attrib(wave,"rgb","0,50,220");
- color (wave2, blue);
- attrib(wave2,"reflect",0.8);
- attrib(wave2,"rgb","0,50,240");
- color (wave3, blue);
- attrib(wave3,"reflect",0.4);
- attrib(wave3,"rgb","0,30, 230");
-
- waves=list (wave,wave2,wave3);
-
-
- #
- # drawing of the fish
- #
-
- fish_profile=cbspline( 3 ,
- list ( ctlpt (E3, 0 , 0 , 0),
- ctlpt (E3, 0.6 , 0 , 0.6 ),
- ctlpt (E3, 1 , 0 , 1 ),
- ctlpt (E3, 1.5 , 0 , 1 ),
- ctlpt (E3, 2 , 0 , 3),
- ctlpt (E3, 1.7 , 0 , 4),
- ctlpt (E3, 1.5 , 0 , 4.5 ),
- ctlpt (E3, 0.8 , 0 , 5),
- ctlpt (E3, 0 , 0 , 5.4 )),
- list (KV_OPEN));
-
- fish_body=surfrev(fish_profile);
-
- color (fish_body,red);
- attrib(fish_body,"reflect",0.9);
- attrib(fish_body,"rgb","240,0,55");
-
- # fish attribute
-
- fish_attr=cbspline( 3 ,
- list ( ctlpt (E3,2 , 0.4 , 1),
- ctlpt (E3, 2.5 , 0.4 , 1 ),
- ctlpt (E3, 3 , 0.4 , 3),
- ctlpt (E3, 2.7 , 0.4 , 4),
- ctlpt (E3, 2.5 , 0.4 , 4.5 ),
- ctlpt (E3, -2.5 , 0.4 , 4.5 ),
- ctlpt (E3, -2.7 , 0.4 , 4),
- ctlpt (E3, -3 , 0.4 , 3),
- ctlpt (E3, -2.5 , 0.4 , 1 ),
- ctlpt (E3, -2 , 0.4 , 1),
- ctlpt (E3, 2 , 0.4 , 1)),
- list (KV_OPEN));
-
- fish_attribute=extrude(fish_attr,vector(0,-0.8,0));
-
-
- color (fish_attribute,yellow);
- attrib(fish_attribute,"reflect",0.9);
- attrib(fish_attribute,"rgb","0,255,240");
- fish=list(fish_body,fish_attribute);
-
-
- interact(waves);
-
-
-